/* eslint-disable eol-last */
/* eslint-disable indent */
'use strict';
const { formatDate } = require('./formatDate');
/**
 * 格式化日期
 */

function _formatBlogTime(obj) {
    obj.createdAtFormat = formatDate(obj.createdAt);
    obj.updatedAtFormat = formatDate(obj.updatedAt);
    return obj;
}
// 格式化内容
function _formatBlogContent(obj) {
    // 不更改原始数据
    obj.formatContent = obj.content;
    // @nikeName - userName XXXXX
    const REG_AT_WHO = /@(.+?)\s-\s(\w+?)\b/g;
    // @<a href = "/profile/userName">@nickName</a> xxxxxx>
    obj.formatContent = obj.formatContent.replace(REG_AT_WHO,
        (matchStr, nickName, userName) => {
            return `<a href = "/profile/${userName}">@${nickName}</a>`;
        });
    return obj;
}

function formatBlog(list) {
    // 如果没有传递博客信息，将对象赋值给博客
    if (list == null) {

        list = {};
        return list;
    }
    // 如果传入的博客是一个数组
    if (list instanceof Array) {
        return list.map(_formatBlogTime).map(_formatBlogContent);
    }
    // 如果list是对象，直接做格式化处理
    let result = list;
    result = _formatBlogTime(result); // 格式化日期
    result = _formatBlogContent(result); // 格式化内容
    return result;
}

module.exports = {
    formatBlog,
};